// QRCodeEncoder.h
#ifndef QRCODEENCODER_H
#define QRCODEENCODER_H

#include "QRCodeCommon.h"

namespace QRCodeEncoder {
    using namespace QRCodeCommon;

    cv::Mat CreateBaseFrame(bool addMarkers = true);
    void FillCell(cv::Mat& frame, int gridRow, int gridCol, const cv::Vec3b& color);
    std::vector<bool> IntToBits(uint32_t value, int bitCount);
    std::vector<bool> BytesToBits(const std::vector<uint8_t>& data);
    void FillAllowedCells(cv::Mat& frame, const std::vector<bool>& bits);
    cv::Mat GenerateQRFrame(const std::vector<uint8_t>& payload, uint16_t frameId, bool isStart, bool isEnd);
    void EncodeFile(const std::string& inputPath, const std::string& outputDir);
}

#endif